package dev.ece.core.cells.events;

import dev.ece.util.lib.Vector3f;

/**
 * 鼠标事件
 * @author 潜行的虚影
 *
 */
public interface Mouse3DEvent {

	/**
	 * 鼠标移动
	 * @param position 射线起点
	 * @param dir 射线方向
	 * @return
	 */
	default boolean onMouseMove(Vector3f position, Vector3f dir) {
		return false;
	}
	
	/**
	 * 鼠标按键按下
	 * @param button 鼠标按钮
	 * @param position 射线起点
	 * @param dir 射线方向
	 * @return
	 */
	default boolean onMouseButtonDown(int button, Vector3f position, Vector3f dir) {
		return false;
	}
	
	/**
	 * 鼠标按键抬起
	 * @param button 鼠标按钮
	 * @param position 射线起点
	 * @param dir 射线方向
	 * @return
	 */
	default boolean onMouseButtonUp(int button, Vector3f position, Vector3f dir) {
		return false;
	}
	
	/**
	 * 鼠标点击
	 * @param button 点击按键
	 * @param position 射线起点
	 * @param dir 射线方向
	 * @return
	 */
	default boolean onMouseButtonClick(int button, Vector3f position, Vector3f dir) {
		return false;
	}
	
	/**
	 * 鼠标滚动
	 * @param xoffset x轴滚动
	 * @param yoffset y轴滚动
	 * @param position 射线起点
	 * @param dir 射线方向
	 * @return
	 */
	default boolean onMouseScroll(double xoffset, double yoffset, Vector3f position, Vector3f dir) {
		return false;
	}
	
}
